package alipay

import (
	"context"
	"github.com/go-pay/gopay"
	"github.com/go-pay/gopay/alipay/v3"
	"github.com/go-pay/gopay/pkg/js"
	"github.com/go-pay/util"
	"github.com/go-pay/xlog"
)

func GetAlipay() {

	// 初始化支付宝客V3户端
	// appid：应用ID
	// privateKey：应用私钥，支持PKCS1和PKCS8
	// isProd：是否是正式环境，沙箱环境请选择新版沙箱应用。
	client, err := alipay.NewClientV3("2016091200494382", "privateKey", false)
	if err != nil {
		xlog.Error(err)
		return
	}

	// 打开Debug开关，输出日志，默认关闭
	client.DebugSwitch = gopay.DebugOn

	// 设置biz_content加密KEY，设置此参数默认开启加密（目前不可用）
	//client.SetAESKey("1234567890123456")

	// 传入证书内容
	err = client.SetCert([]byte("appPublicCert.crt bytes"), []byte("alipayRootCert bytes"), []byte("alipayPublicCert.crt bytes"))
	if err != nil {
		return
	}

	// 请求参数
	bm := make(gopay.BodyMap)
	bm.Set("subject", "预创建创建订单").
		Set("out_trade_no", util.RandomString(32)).
		Set("total_amount", "0.01")

	// 创建订单
	aliRsp, err := client.TradePrecreate(context.Background(), bm)
	if err != nil {
		xlog.Errorf("client.TradePrecreate(), err:%v", err)
		return
	}
	xlog.Warnf("aliRsp:%s", js.Marshal(aliRsp))

	if aliRsp.StatusCode != alipay.Success {
		xlog.Errorf("aliRsp.StatusCode:%d", aliRsp.StatusCode)
		return
	}
	xlog.Warnf("aliRsp.QrCode:", aliRsp.QrCode)
	xlog.Warnf("aliRsp.OutTradeNo:", aliRsp.OutTradeNo)
}
